package cn.skylark.wcm.service;


import cn.skylark.wcm.entity.Resources;
import cn.skylark.wcm.entity.Role;
import com.github.pagehelper.PageInfo;

import javax.annotation.Resource;
import java.util.List;

/**
 * 角色服务接口service
 *
 * @author chuhl
 * @since
 */
public interface RoleService {
  /**
   * 取得被指定角色
   *
   * @param uid Integer
   * @return List<Role>
   */
  List<Role> queryRoleListWithSelected(Integer uid);

  /**
   * 保存角色
   *
   * @param role Role
   */
  void save(Role role);

  /**
   * 分页取得角色列表
   *
   * @param role Role
   * @param start int
   * @param length int
   * @return PageInfo<Role>
   */
  PageInfo<Role> selectByPage(Role role, int start, int length);

  /**
   * 删除角色
   *
   * @param roleid Integer
   */
  void delRole(Integer roleid);
  /**
   *  根据租户ID获取角色列表
   * @param tenanid
   * @return
   */
  List<Role> queryRoleListWithTennerId(Integer tenanid);

  /**
   *  根据租户ID获取该租户所有权限
   * @param tenanid
   * @return
   */
  List<Resources> queryAllResourceWithTenanId(Integer tenanid);

  /**
   * 删除角色（伦理删除）
   * @param id Integer 角色id
   */
  void deleteRoleById(Integer id);

  /**
   * 查询用户是否存在
   * @param role
   * @return
   */
  Role selectByParameter(Role role);

  /**
   * 通过属性获取分页列表
   * @param role 角色的实体类
   * @param start 开始的条数
   * @param length 每页多少个
   * @param searchValue  查询条件
   * @param flag 标志位
   * @return
   */
  PageInfo<Role> selectByPara(Role role, String flag,String searchValue, int start, int length);
}
